package com.lry.basic.algorithm.common;

/**
 * @author:刘仁有
 * @desc:
 * @email:953506233@qq.com
 * @data:2019/9/5
 */
public class RemoveDuplicates {
    public static void main(String[] args) {
        int[] arr = new int[]{1,1,1,2,2,2,3,4};
        System.out.println(removeDuplicates(arr));
        print(arr);
    }
    //beat 100%
    public static int removeDuplicates(int[] nums) {
        if(null==nums)return 0;
        if(nums.length<=1)return 1;
        int cur = 0,i=1;
        for(;i<nums.length;i++){
            if(nums[i]!=nums[cur]){
                cur++;
                nums[cur] = nums[i];
            }
        }
        return cur+1;
    }


    public static int removeDuplicates2(int[] nums){
        int current = 1;           //新数组中有效位置的最后一位，新加入的数据应当写到current+1
        for (int i = 2; i < nums.length;i++) //从第三位开始循环，前两位无论如何都是要加入新数组的
        {
            if (nums[i] != nums[current - 1])  //符合条件，加入新数组
            {
                current += 1;//新加入的数据应当写到current+1
                nums[current] = nums[i];//新加入的数据应当写到current+1
            }
        }
        return current+1;
    }


    private static void print(int[]arr){
        for (int i:arr) {
            System.out.print(i+" ");
        }
    }
}
